package com.vcar.LDiceClient.dataproxy
{
	import com.vcar.LDiceClient.config.ProxyNames;
	
	import org.puremvc.as3.patterns.proxy.Proxy;
	
	public class DateProxy extends Proxy
	{
		/**
		 * 服务器时间 
		 */		
		private var _serverTime:Number;
		
		/**
		 *对应的本地时间 
		 */		
		private var _localTime:Number;
		
		public function DateProxy(data:Object=null)
		{
			super(ProxyNames.DateProxy, data);
		}
		
		public function requestServerTime():void
		{
			var p:SocketProxy=facade.retrieveProxy(ProxyNames.SocketProxy) as SocketProxy;
			var param:RequestMessage=new RequestMessage();
			param.type=1;
			param.subtype=2;
			p.send(param);
		}
		
		/**
		 *  
		 * @return 原始的服务器时间 
		 * 没有什么特殊原因，这个接口不要调用
		 */		
		public function get serverTime():Date
		{
			var d:Date=new Date();
			d.setTime(_serverTime);
			return d;
		}
		
		/**
		 * 替代系统的new Date() 
		 * @return 与serverTime调整后的date对像
		 * return = _serverTime - _localTime +new Date().getTime();
		 */		
		public function getDate():Date
		{
			var d:Date=new Date();
			d.setTime(_serverTime - _localTime +new Date().getTime());
			return d;
			
		}
		
		/**
		 * 设置服务器时间，同时设置本地时间 
		 * @param d
		 * 
		 */		
		public function setServerTime(d:Number):void
		{
			_serverTime=d;
			_localTime=new Date().getTime();
		}
	}
}